This is a notebook delving into the “bucket”-style, alternative analyses for Studies 1-3. In this analysis, we define three categories, or “buckets,” of mental capacities—BODY capacites, HEART capacities, and MIND capacities. To do this, we take the six items with the strongest positive factor loadings on each of these factors, according to an EFA of adults’ responses. We chose six items per “bucket” in order to have an even number of items in each category.
Study 1
Define buckets
Examine first-order age trends


Examine difference scores


non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!

Examine absolute difference scores


non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!

Study 2
Define buckets
Examine first-order age trends


Examine difference scores



Examine absolute difference scores



Study 3
Define buckets
Examine first-order age trends

Examine difference scores
non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!

Examine absolute difference scores
non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!non-integer #successes in a binomial glm!

LS0tCnRpdGxlOiAiU3R1ZGllcyAxLTM6IEJ1Y2tldCBhbmFseXNlcyIKb3V0cHV0OiAKICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKLS0tCgpUaGlzIGlzIGEgbm90ZWJvb2sgZGVsdmluZyBpbnRvIHRoZSAiYnVja2V0Ii1zdHlsZSwgYWx0ZXJuYXRpdmUgYW5hbHlzZXMgZm9yIFN0dWRpZXMgMS0zLiBJbiB0aGlzIGFuYWx5c2lzLCB3ZSBkZWZpbmUgdGhyZWUgY2F0ZWdvcmllcywgb3IgImJ1Y2tldHMsIiBvZiBtZW50YWwgY2FwYWNpdGllc+KAlF9CT0RZXyBjYXBhY2l0ZXMsIF9IRUFSVF8gY2FwYWNpdGllcywgYW5kIF9NSU5EXyBjYXBhY2l0aWVzLiBUbyBkbyB0aGlzLCB3ZSB0YWtlIHRoZSBzaXggaXRlbXMgd2l0aCB0aGUgc3Ryb25nZXN0IHBvc2l0aXZlIGZhY3RvciBsb2FkaW5ncyBvbiBlYWNoIG9mIHRoZXNlIGZhY3RvcnMsIGFjY29yZGluZyB0byBhbiBFRkEgb2YgYWR1bHRzJyByZXNwb25zZXMuIFdlIGNob3NlIHNpeCBpdGVtcyBwZXIgImJ1Y2tldCIgaW4gb3JkZXIgdG8gaGF2ZSBhbiBldmVuIG51bWJlciBvZiBpdGVtcyBpbiBlYWNoIGNhdGVnb3J5LgoKYGBge3IgZ2xvYmFsX29wdGlvbnMsIGluY2x1ZGUgPSBGfQprbml0cjo6b3B0c19jaHVuayRzZXQoZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDAuNjcsIAogICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSA9IEYsIGVjaG8gPSBGKQpgYGAKCmBgYHtyfQpiaW5vbWlhbF9zbW9vdGggPC0gZnVuY3Rpb24oLi4uKSB7CiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImdsbSIsIG1ldGhvZC5hcmdzID0gbGlzdChmYW1pbHkgPSAiYmlub21pYWwiKSwgLi4uKQp9CmBgYAoKYGBge3J9CiMgUlVOIERJTUtJRF9NQU5VU0NSSVBULlJNRCBGSVJTVCEKYGBgCgojIFN0dWR5IDEKCiMjIERlZmluZSBidWNrZXRzCgpgYGB7cn0KZDFfYnVja2V0cyA8LSBsb2FkaW5nc19mdW4oZWZhXzNfZDFfYWQpICU+JQogIG11dGF0ZShmYWN0b3IgPSByZWNvZGVfZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRjIiID0gIkJPRFkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGMSIgPSAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGMyIgPSAiTUlORCIpKSAlPiUKICBncm91cF9ieShmYWN0b3IpICU+JQogIHRvcF9uKDYsIGxvYWRpbmcpICU+JQogIHVuZ3JvdXAoKQpgYGAKCmBgYHtyfQpkMV9hbGxfZW5kb3JzZSA8LSBkMV9idWNrZXRzICU+JQogIHNlbGVjdCgtbG9hZGluZykgJT4lCiAgbGVmdF9qb2luKGQxX2FsbCkgJT4lCiAgbXV0YXRlKGVuZG9yc2UgPSBpZmVsc2UocmVzcG9uc2VfbnVtID4gMCwgMSwgMCkpICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCwgc3ViaWQsIGNoYXJhY3RlciwgZmFjdG9yKSAlPiUKICBzdW1tYXJpc2UobiA9IGxlbmd0aChlbmRvcnNlKSwKICAgICAgICAgICAgc3VtX2VuZG9yc2UgPSBzdW0oZW5kb3JzZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgcHJvcF9lbmRvcnNlID0gbWVhbihlbmRvcnNlLCBuYS5ybSA9IFQpKSAlPiUKICB1bmdyb3VwKCkKYGBgCgojIyBFeGFtaW5lIGZpcnN0LW9yZGVyIGFnZSB0cmVuZHMKCmBgYHtyLCBpbmNsdWRlID0gVH0KZ2dwbG90KGQxX2FsbF9lbmRvcnNlLCAKICAgICAgIGFlcyh4ID0gcHJvcF9lbmRvcnNlLCBjb2xvciA9IGFnZV9ncm91cCwgZmlsbCA9IGFnZV9ncm91cCkpICsKICBmYWNldF9ncmlkKGNoYXJhY3RlciB+IGZhY3RvcikgKwogIGdlb21faGlzdG9ncmFtKHBvc2l0aW9uID0gImlkZW50aXR5IiwgYmlud2lkdGggPSAxLzYsIGFscGhhID0gMC41KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoLTAuMiwgMS4yKSwgYnJlYWtzID0gc2VxKDAsIDEsIDAuNSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDEiLCBkaXJlY3Rpb24gPSAtMSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiLCBkaXJlY3Rpb24gPSAtMSkKYGBgCgpgYGB7cn0KZDFfYWxsX2VuZG9yc2VfYm9vdCA8LSBkMV9hbGxfZW5kb3JzZSAlPiUKICBncm91cF9ieShhZ2VfZ3JvdXAsIGNoYXJhY3RlciwgZmFjdG9yKSAlPiUKICBtdWx0aV9ib290X3N0YW5kYXJkKGNvbCA9ICJwcm9wX2VuZG9yc2UiKSAlPiUKICB1bmdyb3VwKCkKYGBgCgpgYGB7cn0KZmlnU1VQUDFfcGxvdCA8LSBkMV9hbGxfZW5kb3JzZSAlPiUKICBmaWx0ZXIoYWdlX2dyb3VwICE9ICJhZHVsdHMiKSAlPiUKICBsZWZ0X2pvaW4oZDFfNzkgJT4lIGRpc3RpbmN0KHN1YmlkLCBhZ2UpKSAlPiUKICBmaWx0ZXIoIWlzLm5hKGFnZSkpICU+JQogIGdncGxvdChhZXMoeCA9IGFnZSwgeSA9IHByb3BfZW5kb3JzZSwgCiAgICAgICAgICAgICBmaWxsID0gY2hhcmFjdGVyLCBjb2xvciA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCh+IGZhY3RvcikgKwogIGdlb21faml0dGVyKGFscGhhID0gMC40LCB3aWR0aCA9IDAsIGhlaWdodCA9IDAuMDMpICsKICBiaW5vbWlhbF9zbW9vdGgoYWVzKHdlaWdodCA9IG4pLCBzaG93LmxlZ2VuZCA9IEYpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJnbG0iLAogICMgICAgICAgICAgICAgbWV0aG9kLmFyZ3MgPSBsaXN0KGZhbWlseSA9ICJiaW5vbWlhbCIpKSArCiAgZ2VvbV9wb2ludChkYXRhID0gZDFfYWxsX2VuZG9yc2UgJT4lIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpLAogICAgICAgICAgICAgYWVzKHggPSAxMSksIGFscGhhID0gMC40LCBzaG93LmxlZ2VuZCA9IEYsCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcmRvZGdlKGRvZGdlLndpZHRoID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXR0ZXIuaGVpZ2h0ID0gMC4wMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0dGVyLndpZHRoID0gMC4yNSkpICsKICBnZW9tX3BvaW50cmFuZ2UoZGF0YSA9IGQxX2FsbF9lbmRvcnNlX2Jvb3QgJT4lIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpLAogICAgICAgICAgICAgICAgICBhZXMoeCA9IDExLCB5ID0gbWVhbiwgeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSwgc2hvdy5sZWdlbmQgPSBGLAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGZhdHRlbiA9IDUpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYyg3OjExKSwgCiAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMocGFzdGUwKDc6MTAsICJ5IiksICJhZHVsdHMiKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMSwgMS82KSwgbGFiZWxzID0gMDo2KSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoIiNmYjlhOTkiLCAiIzFmNzhiNCIpKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiI2ZiOWE5OSIsICIjMWY3OGI0IikpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygyMSwgMjIpKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGEgPSAxLCBzaXplID0gMykpKSArCiAgbGFicyh5ID0gIm51bWJlciBvZiBpdGVtcyBlbmRvcnNlZCAob3V0IG9mIDYpIikKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDYsIGZpZy5hc3AgPSAwLjd9CmZpZ1NVUFAxX3dpdGhfY2FwdGlvbiA8LSBhZGRfc3ViKGZpZ1NVUFAxX3Bsb3QsIHN0cl93cmFwKCJGaWd1cmUgU1VQUDE6IE51bWJlciBvZiBtZW50YWwgY2FwYWNpdHkgaXRlbXMgKG91dCBvZiA2KSBlbmRvcnNlZCBpbiBlYWNoIGRvbWFpbiAoQk9EWSwgSEVBUlQsIGFuZCBNSU5EKSBieSA3LSB0byA5LXllYXItb2xkIGNoaWxkcmVuIGFuZCBhZHVsdHMgaW4gU3R1ZHkgMSwgaW4gd2hpY2ggZWFjaCBwYXJ0aWNpcGFudCBhc3Nlc3NlZCA0MCBtZW50YWwgY2FwYWNpdGllcyBmb3Igb25lIG9mIHR3byB0YXJnZXQgY2hhcmFjdGVyczogYSBiZWV0bGUgKHBpbmsgY2lyY2xlcykgb3IgYSByb2JvdCAoYmx1ZSBzcXVhcmVzKS4gV2UgZGVmaW5lZCBlYWNoIGRvbWFpbiBieSB0aGUgNiBpdGVtcyB0aGF0IGxvYWRlZCB0aGUgbW9zdCBwb3NpdGl2ZWx5IG9uIHRoZSBjb3JyZXNwb25kaW5nIGZhY3RvciBpbiBhbiBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMgb2YgYWR1bHRzJyByZXNwb25zZXMsIGFuZCB3ZSBjb25zaWRlcmVkIHJlc3BvbnNlcyBvZiBlaXRoZXIgJ3llcycgb3IgJ2tpbmRhJyAoYnV0IG5vdCAnbm8nKSB0byBiZSBlbmRvcnNlbWVudHMuIExpbmVzIGNvcnJlc3BvbmQgdG8gbG9naXN0aWMgcmVncmVzc2lvbnMgY29uc2lkZXJpbmcgY2hpbGRyZW4ncyBzY29yZXMgYWxvbmUuIEVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgb24gYWR1bHRzJyBzY29yZXMuIiwgMTMwKSwgeCA9IDAsIGhqdXN0ID0gMCkKZ2dkcmF3KGZpZ1NVUFAxX3dpdGhfY2FwdGlvbikKYGBgCgojIyBFeGFtaW5lIGRpZmZlcmVuY2Ugc2NvcmVzCgpgYGB7cn0KZDFfYWxsX2VuZG9yc2VfZGlmZiA8LSBkMV9hbGxfZW5kb3JzZSAlPiUKICBzZWxlY3QoYWdlX2dyb3VwLCBzdWJpZCwgY2hhcmFjdGVyLCBmYWN0b3IsIHByb3BfZW5kb3JzZSkgJT4lCiAgc3ByZWFkKGZhY3RvciwgcHJvcF9lbmRvcnNlKSAlPiUKICBncm91cF9ieShhZ2VfZ3JvdXAsIHN1YmlkLCBjaGFyYWN0ZXIpICU+JQogIG11dGF0ZShgQk9EWSBtaW51cyBIRUFSVGAgPSBCT0RZIC0gSEVBUlQsCiAgICAgICAgIGBCT0RZIG1pbnVzIE1JTkRgID0gQk9EWSAtIE1JTkQsCiAgICAgICAgIGBNSU5EIG1pbnVzIEhFQVJUYCA9IE1JTkQgLSBIRUFSVCkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBzZWxlY3QoLWMoQk9EWSwgSEVBUlQsIE1JTkQpKSAlPiUKICBnYXRoZXIoY29tcGFyaXNvbiwgZGlmZmVyZW5jZSwgY29udGFpbnMoIm1pbiIpKSAlPiUKICBtdXRhdGUoZGlmZl8wMSA9IChkaWZmZXJlbmNlICsgMSkvMiwKICAgICAgICAgZGlmZl8wMV9hYnMgPSBhYnMoZGlmZmVyZW5jZSkpCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBUfQpnZ3Bsb3QoZDFfYWxsX2VuZG9yc2VfZGlmZiwgCiAgICAgICBhZXMoeCA9IGRpZmZfMDEsIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwKSkgKwogIGZhY2V0X2dyaWQoY2hhcmFjdGVyIH4gY29tcGFyaXNvbikgKwogIGdlb21faGlzdG9ncmFtKHBvc2l0aW9uID0gImlkZW50aXR5IiwgYmlud2lkdGggPSAxLzEyLCBhbHBoYSA9IDAuNSkgKwogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDAuNSwgbHR5ID0gMikgKwogIHNjYWxlX3hfY29udGludW91cyhsaW1pdHMgPSBjKC0wLjIsIDEuMiksIGJyZWFrcyA9IGMoMCwgMSwgMC41KSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIsIGRpcmVjdGlvbiA9IC0xKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIsIGRpcmVjdGlvbiA9IC0xKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gVH0KZ2dwbG90KGQxX2FsbF9lbmRvcnNlX2RpZmYsIAogICAgICAgYWVzKHggPSBkaWZmXzAxLCBjb2xvciA9IGFnZV9ncm91cCwgZmlsbCA9IGFnZV9ncm91cCkpICsKICBmYWNldF9ncmlkKC4gfiBjb21wYXJpc29uKSArCiAgZ2VvbV9oaXN0b2dyYW0ocG9zaXRpb24gPSAiaWRlbnRpdHkiLCBiaW53aWR0aCA9IDEvMTIsIGFscGhhID0gMC41KSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gMC41LCBsdHkgPSAyKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoLTAuMiwgMS4yKSwgYnJlYWtzID0gYygwLCAxLCAwLjUpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIiwgZGlyZWN0aW9uID0gLTEpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIiwgZGlyZWN0aW9uID0gLTEpCmBgYAoKYGBge3J9CmQxX2FsbF9lbmRvcnNlX2RpZmZfYm9vdCA8LSBkMV9hbGxfZW5kb3JzZV9kaWZmICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCwgY2hhcmFjdGVyLCBjb21wYXJpc29uKSAlPiUKICBtdWx0aV9ib290X3N0YW5kYXJkKGNvbCA9ICJkaWZmXzAxIikgJT4lCiAgdW5ncm91cCgpCmBgYAoKYGBge3J9CmZpZ1NVUFAyX3Bsb3QgPC0gZDFfYWxsX2VuZG9yc2VfZGlmZiAlPiUKICBmaWx0ZXIoYWdlX2dyb3VwICE9ICJhZHVsdHMiKSAlPiUKICBsZWZ0X2pvaW4oZDFfNzkgJT4lIGRpc3RpbmN0KHN1YmlkLCBhZ2UpKSAlPiUKICBmaWx0ZXIoIWlzLm5hKGFnZSkpICU+JQogIG11dGF0ZSh5ID0gKGRpZmZlcmVuY2UgKyA2KS8xMikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gYWdlLCB5ID0gZGlmZl8wMSwgCiAgICAgICAgICAgICBmaWxsID0gY2hhcmFjdGVyLCBjb2xvciA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCh+IGNvbXBhcmlzb24pICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUsIGx0eSA9IDIpICsKICBnZW9tX2ppdHRlcihhbHBoYSA9IDAuNCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwLjAxNSkgKwogIGJpbm9taWFsX3Ntb290aChhZXMod2VpZ2h0ID0gMSksIHNob3cubGVnZW5kID0gRikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImdsbSIsCiAgIyAgICAgICAgICAgICBtZXRob2QuYXJncyA9IGxpc3QoZmFtaWx5ID0gImJpbm9taWFsIikpICsKICBnZW9tX3BvaW50KGRhdGEgPSBkMV9hbGxfZW5kb3JzZV9kaWZmICU+JSBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSwKICAgICAgICAgICAgIGFlcyh4ID0gMTEpLCBhbHBoYSA9IDAuNCwgc2hvdy5sZWdlbmQgPSBGLAogICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXJkb2RnZShkb2RnZS53aWR0aCA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0dGVyLmhlaWdodCA9IDAuMDE1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXR0ZXIud2lkdGggPSAwLjI1KSkgKwogIGdlb21fcG9pbnRyYW5nZShkYXRhID0gZDFfYWxsX2VuZG9yc2VfZGlmZl9ib290ICU+JSBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSwKICAgICAgICAgICAgICAgICAgYWVzKHggPSAxMSwgeSA9IG1lYW4sIHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNSksIHNob3cubGVnZW5kID0gRiwKICAgICAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBmYXR0ZW4gPSA1KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IGMoNzoxMSksIAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKHBhc3RlMCg3OjEwLCAieSIpLCAiYWR1bHRzIikpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDEvMTIpLCBsYWJlbHMgPSBzZXEoLTYsIDYsIDEpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoIiNmYjlhOTkiLCAiIzFmNzhiNCIpKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiI2ZiOWE5OSIsICIjMWY3OGI0IikpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygyMSwgMjIpKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGEgPSAxLCBzaXplID0gMykpKSArCiAgbGFicyh5ID0gImRpZmZlcmVuY2VzIGluIG51bWJlciBvZiBpdGVtcyBlbmRvcnNlZCAob3V0IG9mIDYpIikKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDYsIGZpZy5hc3AgPSAwLjd9CmZpZ1NVUFAyX3dpdGhfY2FwdGlvbiA8LSBhZGRfc3ViKGZpZ1NVUFAyX3Bsb3QsIHN0cl93cmFwKCJGaWd1cmUgU1VQUDI6IERpZmZlcmVuY2VzIGluIHRoZSBudW1iZXIgb2YgbWVudGFsIGNhcGFjaXR5IGl0ZW1zIChvdXQgb2YgNikgZW5kb3JzZWQgYWNyb3NzIHRoZSB0aHJlZSBkb21haW5zIChCT0RZIG1pbnVzIEhFQVJULCBCT0RZIG1pbnVzIE1JTkQsIGFuZCBNSU5EIG1pbnVzIEhFQVJUKSBieSA3LSB0byA5LXllYXItb2xkIGNoaWxkcmVuIGFuZCBhZHVsdHMgaW4gU3R1ZHkgMSwgaW4gd2hpY2ggZWFjaCBwYXJ0aWNpcGFudCBhc3Nlc3NlZCA0MCBtZW50YWwgY2FwYWNpdGllcyBmb3Igb25lIG9mIHR3byB0YXJnZXQgY2hhcmFjdGVyczogYSBiZWV0bGUgKHBpbmsgY2lyY2xlcykgb3IgYSByb2JvdCAoYmx1ZSBzcXVhcmVzKS4gV2UgZGVmaW5lZCBlYWNoIGRvbWFpbiBieSB0aGUgNiBpdGVtcyB0aGF0IGxvYWRlZCB0aGUgbW9zdCBwb3NpdGl2ZWx5IG9uIHRoZSBjb3JyZXNwb25kaW5nIGZhY3RvciBpbiBhbiBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMgb2YgYWR1bHRzJyByZXNwb25zZXMsIGFuZCB3ZSBjb25zaWRlcmVkIHJlc3BvbnNlcyBvZiBlaXRoZXIgJ3llcycgb3IgJ2tpbmRhJyAoYnV0IG5vdCAnbm8nKSB0byBiZSBlbmRvcnNlbWVudHMuIExpbmVzIGNvcnJlc3BvbmQgdG8gbG9naXN0aWMgcmVncmVzc2lvbnMgY29uc2lkZXJpbmcgY2hpbGRyZW4ncyBzY29yZXMgYWxvbmUuIEVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgb24gYWR1bHRzJyBzY29yZXMuIiwgMTMwKSwgeCA9IDAsIGhqdXN0ID0gMCkKZ2dkcmF3KGZpZ1NVUFAyX3dpdGhfY2FwdGlvbikKYGBgCgojIyBFeGFtaW5lIGFic29sdXRlIGRpZmZlcmVuY2Ugc2NvcmVzCgpgYGB7cn0KZDFfYWxsX2VuZG9yc2VfZGlmZl9hYnNfYm9vdCA8LSBkMV9hbGxfZW5kb3JzZV9kaWZmICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCwgY2hhcmFjdGVyLCBjb21wYXJpc29uKSAlPiUKICBtdWx0aV9ib290X3N0YW5kYXJkKGNvbCA9ICJkaWZmXzAxX2FicyIpICU+JQogIHVuZ3JvdXAoKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gVH0KZ2dwbG90KGQxX2FsbF9lbmRvcnNlX2RpZmYsIAogICAgICAgYWVzKHggPSBkaWZmXzAxX2FicywgY29sb3IgPSBhZ2VfZ3JvdXAsIGZpbGwgPSBhZ2VfZ3JvdXApKSArCiAgZmFjZXRfZ3JpZChjaGFyYWN0ZXIgfiBjb21wYXJpc29uKSArCiAgZ2VvbV9oaXN0b2dyYW0ocG9zaXRpb24gPSAiaWRlbnRpdHkiLCBiaW53aWR0aCA9IDEvNiwgYWxwaGEgPSAwLjUpICsKICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSAwLjUsIGx0eSA9IDIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygtMC4yLCAxLjIpLCBicmVha3MgPSBjKDAsIDEsIDAuNSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDEiLCBkaXJlY3Rpb24gPSAtMSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiLCBkaXJlY3Rpb24gPSAtMSkKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IFR9CmdncGxvdChkMV9hbGxfZW5kb3JzZV9kaWZmLCAKICAgICAgIGFlcyh4ID0gZGlmZl8wMV9hYnMsIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwKSkgKwogIGZhY2V0X2dyaWQoLiB+IGNvbXBhcmlzb24pICsKICBnZW9tX2hpc3RvZ3JhbShwb3NpdGlvbiA9ICJpZGVudGl0eSIsIGJpbndpZHRoID0gMS82LCBhbHBoYSA9IDAuNSkgKwogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDAuNSwgbHR5ID0gMikgKwogIHNjYWxlX3hfY29udGludW91cyhsaW1pdHMgPSBjKC0wLjIsIDEuMiksIGJyZWFrcyA9IGMoMCwgMSwgMC41KSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIsIGRpcmVjdGlvbiA9IC0xKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIsIGRpcmVjdGlvbiA9IC0xKQpgYGAKCmBgYHtyfQpmaWdTVVBQM19wbG90IDwtIGQxX2FsbF9lbmRvcnNlX2RpZmYgJT4lCiAgZmlsdGVyKGFnZV9ncm91cCAhPSAiYWR1bHRzIikgJT4lCiAgbGVmdF9qb2luKGQxXzc5ICU+JSBkaXN0aW5jdChzdWJpZCwgYWdlKSkgJT4lCiAgZmlsdGVyKCFpcy5uYShhZ2UpKSAlPiUKICBtdXRhdGUoeSA9IChkaWZmZXJlbmNlICsgNikvMTIpICU+JQogIGdncGxvdChhZXMoeCA9IGFnZSwgeSA9IGRpZmZfMDFfYWJzLCAKICAgICAgICAgICAgIGZpbGwgPSBjaGFyYWN0ZXIsIGNvbG9yID0gY2hhcmFjdGVyLCBzaGFwZSA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKH4gY29tcGFyaXNvbikgKwogIGdlb21faml0dGVyKGFscGhhID0gMC40LCB3aWR0aCA9IDAsIGhlaWdodCA9IDAuMDE1KSArCiAgYmlub21pYWxfc21vb3RoKGFlcyh3ZWlnaHQgPSAxKSwgc2hvdy5sZWdlbmQgPSBGKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwKICAjICAgICAgICAgICAgIG1ldGhvZC5hcmdzID0gbGlzdChmYW1pbHkgPSAiYmlub21pYWwiKSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IGQxX2FsbF9lbmRvcnNlX2RpZmYgJT4lIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpLAogICAgICAgICAgICAgYWVzKHggPSAxMSksIGFscGhhID0gMC40LCBzaG93LmxlZ2VuZCA9IEYsCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcmRvZGdlKGRvZGdlLndpZHRoID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXR0ZXIuaGVpZ2h0ID0gMC4wMTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdHRlci53aWR0aCA9IDAuMjUpKSArCiAgZ2VvbV9wb2ludHJhbmdlKGRhdGEgPSBkMV9hbGxfZW5kb3JzZV9kaWZmX2Fic19ib290ICU+JSAKICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSwKICAgICAgICAgICAgICAgICAgYWVzKHggPSAxMSwgeSA9IG1lYW4sIHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNSksIHNob3cubGVnZW5kID0gRiwKICAgICAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBmYXR0ZW4gPSA1KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IGMoNzoxMSksIAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKHBhc3RlMCg3OjEwLCAieSIpLCAiYWR1bHRzIikpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDEvNiksIGxhYmVscyA9IHNlcSgwLCA2LCAxKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCIjZmI5YTk5IiwgIiMxZjc4YjQiKSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiNmYjlhOTkiLCAiIzFmNzhiNCIpKSArCiAgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMjEsIDIyKSkgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSwgc2l6ZSA9IDMpKSkgKwogIGxhYnMoeSA9ICJhc2JvbHV0ZSBkaWZmZXJlbmNlcyBpbiBudW1iZXIgb2YgaXRlbXMgZW5kb3JzZWQgKG91dCBvZiA2KSIpCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA2LCBmaWcuYXNwID0gMC43fQpmaWdTVVBQM193aXRoX2NhcHRpb24gPC0gYWRkX3N1YihmaWdTVVBQM19wbG90LCBzdHJfd3JhcCgiRmlndXJlIFNVUFAyOiBBYnNvbHV0ZSBkaWZmZXJlbmNlcyBpbiB0aGUgbnVtYmVyIG9mIG1lbnRhbCBjYXBhY2l0eSBpdGVtcyAob3V0IG9mIDYpIGVuZG9yc2VkIGFjcm9zcyB0aGUgdGhyZWUgZG9tYWlucyAoQk9EWSBtaW51cyBIRUFSVCwgQk9EWSBtaW51cyBNSU5ELCBhbmQgTUlORCBtaW51cyBIRUFSVCkgYnkgNy0gdG8gOS15ZWFyLW9sZCBjaGlsZHJlbiBhbmQgYWR1bHRzIGluIFN0dWR5IDEsIGluIHdoaWNoIGVhY2ggcGFydGljaXBhbnQgYXNzZXNzZWQgNDAgbWVudGFsIGNhcGFjaXRpZXMgZm9yIG9uZSBvZiB0d28gdGFyZ2V0IGNoYXJhY3RlcnM6IGEgYmVldGxlIChwaW5rIGNpcmNsZXMpIG9yIGEgcm9ib3QgKGJsdWUgc3F1YXJlcykuIFdlIGRlZmluZWQgZWFjaCBkb21haW4gYnkgdGhlIDYgaXRlbXMgdGhhdCBsb2FkZWQgdGhlIG1vc3QgcG9zaXRpdmVseSBvbiB0aGUgY29ycmVzcG9uZGluZyBmYWN0b3IgaW4gYW4gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzIG9mIGFkdWx0cycgcmVzcG9uc2VzLCBhbmQgd2UgY29uc2lkZXJlZCByZXNwb25zZXMgb2YgZWl0aGVyICd5ZXMnIG9yICdraW5kYScgKGJ1dCBub3QgJ25vJykgdG8gYmUgZW5kb3JzZW1lbnRzLiBMaW5lcyBjb3JyZXNwb25kIHRvIGxvZ2lzdGljIHJlZ3Jlc3Npb25zIGNvbnNpZGVyaW5nIGNoaWxkcmVuJ3Mgc2NvcmVzIGFsb25lLiBFcnJvciBiYXJzIGFyZSBib290c3RyYXBwZWQgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIG9uIGFkdWx0cycgc2NvcmVzLiIsIDEzMCksIHggPSAwLCBoanVzdCA9IDApCmdnZHJhdyhmaWdTVVBQM193aXRoX2NhcHRpb24pCmBgYAoKCiMgU3R1ZHkgMgoKIyMgRGVmaW5lIGJ1Y2tldHMKCmBgYHtyfQpkMl9idWNrZXRzIDwtIGxvYWRpbmdzX2Z1bihlZmFfM19kMl9hZCkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IHJlY29kZV9mYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGMSIgPSAiQk9EWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkYyIiA9ICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkYzIiA9ICJNSU5EIikpICU+JQogIGdyb3VwX2J5KGZhY3RvcikgJT4lCiAgdG9wX24oNiwgbG9hZGluZykgJT4lCiAgdW5ncm91cCgpCmBgYAoKYGBge3J9CmQyX2FsbF9lbmRvcnNlIDwtIGQyX2J1Y2tldHMgJT4lCiAgc2VsZWN0KC1sb2FkaW5nKSAlPiUKICBsZWZ0X2pvaW4oZDJfYWxsKSAlPiUKICBtdXRhdGUoZW5kb3JzZSA9IGlmZWxzZShyZXNwb25zZV9udW0gPiAwLCAxLCAwKSkgJT4lCiAgbGVmdF9qb2luKGQyX2FuaW0gJT4lIGRpc3RpbmN0KGNoYXJhY3RlciwgYW5pbV9pbmFuKSkgJT4lCiAgZ3JvdXBfYnkoYWdlX2dyb3VwLCBzdWJpZCwgYW5pbV9pbmFuLCBjaGFyYWN0ZXIsIGZhY3RvcikgJT4lCiAgc3VtbWFyaXNlKG4gPSBsZW5ndGgoZW5kb3JzZSksCiAgICAgICAgICAgIHN1bV9lbmRvcnNlID0gc3VtKGVuZG9yc2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgIHByb3BfZW5kb3JzZSA9IG1lYW4oZW5kb3JzZSwgbmEucm0gPSBUKSkgJT4lCiAgdW5ncm91cCgpCmBgYAoKIyMgRXhhbWluZSBmaXJzdC1vcmRlciBhZ2UgdHJlbmRzCgpgYGB7cn0KZDJfYWxsX2VuZG9yc2VfYm9vdF9hbmltIDwtIGQyX2FsbF9lbmRvcnNlICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCwgYW5pbV9pbmFuLCBmYWN0b3IpICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoY29sID0gInByb3BfZW5kb3JzZSIpICU+JQogIHVuZ3JvdXAoKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gVH0KZ2dwbG90KGQyX2FsbF9lbmRvcnNlLCAKICAgICAgIGFlcyh4ID0gcHJvcF9lbmRvcnNlLCBjb2xvciA9IGFnZV9ncm91cCwgZmlsbCA9IGFnZV9ncm91cCkpICsKICBmYWNldF9ncmlkKGFuaW1faW5hbiB+IGZhY3RvcikgKwogIGdlb21faGlzdG9ncmFtKHBvc2l0aW9uID0gImlkZW50aXR5IiwgYmlud2lkdGggPSAxLzYsIGFscGhhID0gMC41KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoLTAuMiwgMS4yKSwgYnJlYWtzID0gYygwLCAxLCAwLjUpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIiwgZGlyZWN0aW9uID0gLTEpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIiwgZGlyZWN0aW9uID0gLTEpCmBgYAoKYGBge3J9CmZpZ1NVUFA0YV9wbG90IDwtIGQyX2FsbF9lbmRvcnNlICU+JQogIGZpbHRlcihhZ2VfZ3JvdXAgIT0gImFkdWx0cyIpICU+JQogIGxlZnRfam9pbihkMl83OSAlPiUgZGlzdGluY3Qoc3ViaWQsIGFnZSkgJT4lCiAgICAgICAgICAgICAgZnVsbF9qb2luKGQyXzQ2ICU+JSBkaXN0aW5jdChzdWJpZCwgYWdlKSkpICU+JQogIGZpbHRlcighaXMubmEoYWdlKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gYWdlLCB5ID0gcHJvcF9lbmRvcnNlLCAKICAgICAgICAgICAgIGZpbGwgPSBhbmltX2luYW4sIGNvbG9yID0gYW5pbV9pbmFuKSkgKwogIGZhY2V0X3dyYXAofiBmYWN0b3IpICsKICBnZW9tX2ppdHRlcihhbHBoYSA9IDAuNCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwLjAzKSArCiAgYmlub21pYWxfc21vb3RoKGFlcyh3ZWlnaHQgPSBuKSwgc2hvdy5sZWdlbmQgPSBGLCBhbHBoYSA9IDAuMDUpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJnbG0iLAogICMgICAgICAgICAgICAgbWV0aG9kLmFyZ3MgPSBsaXN0KGZhbWlseSA9ICJiaW5vbWlhbCIpKSArCiAgZ2VvbV9wb2ludChkYXRhID0gZDJfYWxsX2VuZG9yc2UgJT4lIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpLAogICAgICAgICAgICAgYWVzKHggPSAxMiksIGFscGhhID0gMC40LCBzaG93LmxlZ2VuZCA9IEYsCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcmRvZGdlKGRvZGdlLndpZHRoID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXR0ZXIuaGVpZ2h0ID0gMC4wMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0dGVyLndpZHRoID0gMC4yNSkpICsKICBnZW9tX3BvaW50cmFuZ2UoZGF0YSA9IGQyX2FsbF9lbmRvcnNlX2Jvb3RfYW5pbSAlPiUgZmlsdGVyKGFnZV9ncm91cCA9PSAiYWR1bHRzIiksCiAgICAgICAgICAgICAgICAgIGFlcyh4ID0gMTIsIHkgPSBtZWFuLCB5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjUpLCBzaG93LmxlZ2VuZCA9IEYsCiAgICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgZmF0dGVuID0gNSkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBjKDQ6MTAsIDEyKSwgCiAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMocGFzdGUwKDQ6MTAsICJ5IiksICJhZHVsdHMiKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMSwgMS82KSwgbGFiZWxzID0gMDo2KSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoInNsYXRlZ3JleSIsICJmaXJlYnJpY2sxIiksIG5hLnZhbHVlID0gImdyYXkiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygic2xhdGVncmV5IiwgImZpcmVicmljazEiKSwgbmEudmFsdWUgPSAiZ3JheSIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChhbHBoYSA9IDEsIHNpemUgPSAzKSkpICsKICBsYWJzKHkgPSAibnVtYmVyIG9mIGl0ZW1zIGVuZG9yc2VkIChvdXQgb2YgNikiKQpgYGAKCmBgYHtyfQpkMl9hbGxfZW5kb3JzZV9ib290IDwtIGQyX2FsbF9lbmRvcnNlICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCwgY2hhcmFjdGVyLCBmYWN0b3IpICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoY29sID0gInByb3BfZW5kb3JzZSIpICU+JQogIHVuZ3JvdXAoKQpgYGAKCmBgYHtyfQpmaWdTVVBQNGJfcGxvdCA8LSBkMl9hbGxfZW5kb3JzZSAlPiUKICBmaWx0ZXIoYWdlX2dyb3VwICE9ICJhZHVsdHMiKSAlPiUKICBsZWZ0X2pvaW4oZDJfNzkgJT4lIGRpc3RpbmN0KHN1YmlkLCBhZ2UpICU+JQogICAgICAgICAgICAgIGZ1bGxfam9pbihkMl80NiAlPiUgZGlzdGluY3Qoc3ViaWQsIGFnZSkpKSAlPiUKICBmaWx0ZXIoIWlzLm5hKGFnZSkpICU+JQogIGdncGxvdChhZXMoeCA9IGFnZSwgeSA9IHByb3BfZW5kb3JzZSwgCiAgICAgICAgICAgICBmaWxsID0gY2hhcmFjdGVyLCBjb2xvciA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKH4gZmFjdG9yKSArCiAgZ2VvbV9qaXR0ZXIoYWxwaGEgPSAwLjQsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMC4wMykgKwogIGJpbm9taWFsX3Ntb290aChhZXMod2VpZ2h0ID0gbiksIHNob3cubGVnZW5kID0gRiwgYWxwaGEgPSAwLjA1KSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwKICAjICAgICAgICAgICAgIG1ldGhvZC5hcmdzID0gbGlzdChmYW1pbHkgPSAiYmlub21pYWwiKSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IGQyX2FsbF9lbmRvcnNlICU+JSBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSwKICAgICAgICAgICAgIGFlcyh4ID0gMTIpLCBhbHBoYSA9IDAuNCwgc2hvdy5sZWdlbmQgPSBGLAogICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXJkb2RnZShkb2RnZS53aWR0aCA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0dGVyLmhlaWdodCA9IDAuMDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdHRlci53aWR0aCA9IDAuMjUpKSArCiAgZ2VvbV9wb2ludHJhbmdlKGRhdGEgPSBkMl9hbGxfZW5kb3JzZV9ib290ICU+JSBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSwKICAgICAgICAgICAgICAgICAgYWVzKHggPSAxMiwgeSA9IG1lYW4sIHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNSksIHNob3cubGVnZW5kID0gRiwKICAgICAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBmYXR0ZW4gPSA1KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IGMoNDoxMCwgMTIpLCAKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYyhwYXN0ZTAoNDoxMCwgInkiKSwgImFkdWx0cyIpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAxLzYpLCBsYWJlbHMgPSAwOjYpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJQYWlyZWQiKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJQYWlyZWQiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGEgPSAxLCBzaXplID0gMykpKSArCiAgbGFicyh5ID0gIm51bWJlciBvZiBpdGVtcyBlbmRvcnNlZCAob3V0IG9mIDYpIikKYGBgCgpgYGB7cn0KZmlnU1VQUDRfcGxvdHMgPC0gcGxvdF9ncmlkKGZpZ1NVUFA0YV9wbG90LCBmaWdTVVBQNGJfcGxvdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuY29sID0gMSwgbGFiZWxzID0gIkFVVE8iKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDAuN30KZmlnU1VQUDRfd2l0aF9jYXB0aW9uIDwtIGFkZF9zdWIoZmlnU1VQUDRfcGxvdHMsIHN0cl93cmFwKCJGaWd1cmUgU1VQUDQ6IE51bWJlciBvZiBtZW50YWwgY2FwYWNpdHkgaXRlbXMgKG91dCBvZiA2KSBlbmRvcnNlZCBpbiBlYWNoIGRvbWFpbiAoQk9EWSwgSEVBUlQsIGFuZCBNSU5EKSBieSA0LSB0byA5LXllYXItb2xkIGNoaWxkcmVuIGFuZCBhZHVsdHMgaW4gU3R1ZHkgMiwgaW4gd2hpY2ggZWFjaCBwYXJ0aWNpcGFudCBhc3Nlc3NlZCAyMCBtZW50YWwgY2FwYWNpdGllcyBmb3Igb25lIG9mIG5pbmUgdGFyZ2V0IGNoYXJhY3RlcnMuIFdlIGRlZmluZWQgZWFjaCBkb21haW4gYnkgdGhlIDYgaXRlbXMgdGhhdCBsb2FkZWQgdGhlIG1vc3QgcG9zaXRpdmVseSBvbiB0aGUgY29ycmVzcG9uZGluZyBmYWN0b3IgaW4gYW4gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzIG9mIGFkdWx0cycgcmVzcG9uc2VzLCBhbmQgd2UgY29uc2lkZXJlZCByZXNwb25zZXMgb2YgZWl0aGVyICd5ZXMnIG9yICdraW5kYScgKGJ1dCBub3QgJ25vJykgdG8gYmUgZW5kb3JzZW1lbnRzLiBMaW5lcyBjb3JyZXNwb25kIHRvIGxvZ2lzdGljIHJlZ3Jlc3Npb25zIGNvbnNpZGVyaW5nIGNoaWxkcmVuJ3Mgc2NvcmVzIGFsb25lLiBFcnJvciBiYXJzIGFyZSBib290c3RyYXBwZWQgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIG9uIGFkdWx0cycgc2NvcmVzLiIsIDEzMiksIHggPSAwLCBoanVzdCA9IDApCmdnZHJhdyhmaWdTVVBQNF93aXRoX2NhcHRpb24pCmBgYAoKIyMgRXhhbWluZSBkaWZmZXJlbmNlIHNjb3JlcwoKYGBge3J9CmQyX2FsbF9lbmRvcnNlX2RpZmYgPC0gZDJfYWxsX2VuZG9yc2UgJT4lCiAgc2VsZWN0KGFnZV9ncm91cCwgc3ViaWQsIGNoYXJhY3RlciwgZmFjdG9yLCBwcm9wX2VuZG9yc2UpICU+JQogIGxlZnRfam9pbihkMl9hbmltICU+JSBkaXN0aW5jdChjaGFyYWN0ZXIsIGFuaW1faW5hbikpICU+JQogIHNwcmVhZChmYWN0b3IsIHByb3BfZW5kb3JzZSkgJT4lCiAgZ3JvdXBfYnkoYWdlX2dyb3VwLCBzdWJpZCwgY2hhcmFjdGVyKSAlPiUKICBtdXRhdGUoYEJPRFkgbWludXMgSEVBUlRgID0gQk9EWSAtIEhFQVJULAogICAgICAgICBgQk9EWSBtaW51cyBNSU5EYCA9IEJPRFkgLSBNSU5ELAogICAgICAgICBgTUlORCBtaW51cyBIRUFSVGAgPSBNSU5EIC0gSEVBUlQpICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgc2VsZWN0KC1jKEJPRFksIEhFQVJULCBNSU5EKSkgJT4lCiAgZ2F0aGVyKGNvbXBhcmlzb24sIGRpZmZlcmVuY2UsIGNvbnRhaW5zKCJtaW4iKSkgJT4lCiAgbXV0YXRlKGRpZmZfMDEgPSAoZGlmZmVyZW5jZSArIDEpLzIsCiAgICAgICAgIGRpZmZfMDFfYWJzID0gYWJzKGRpZmZlcmVuY2UpKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gVH0KZ2dwbG90KGQyX2FsbF9lbmRvcnNlX2RpZmYsIAogICAgICAgYWVzKHggPSBkaWZmXzAxLCBjb2xvciA9IGFnZV9ncm91cCwgZmlsbCA9IGFnZV9ncm91cCkpICsKICBmYWNldF9ncmlkKGFuaW1faW5hbiB+IGNvbXBhcmlzb24pICsKICBnZW9tX2hpc3RvZ3JhbShwb3NpdGlvbiA9ICJpZGVudGl0eSIsIGJpbndpZHRoID0gMS8xMiwgYWxwaGEgPSAwLjUpICsKICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSAwLjUsIGx0eSA9IDIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygtMC4yLCAxLjIpLCBicmVha3MgPSBjKDAsIDEsIDAuNSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDEiLCBkaXJlY3Rpb24gPSAtMSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiLCBkaXJlY3Rpb24gPSAtMSkKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IFR9CmdncGxvdChkMl9hbGxfZW5kb3JzZV9kaWZmLCAKICAgICAgIGFlcyh4ID0gZGlmZl8wMSwgY29sb3IgPSBhZ2VfZ3JvdXAsIGZpbGwgPSBhZ2VfZ3JvdXApKSArCiAgZmFjZXRfZ3JpZCguIH4gY29tcGFyaXNvbikgKwogIGdlb21faGlzdG9ncmFtKHBvc2l0aW9uID0gImlkZW50aXR5IiwgYmlud2lkdGggPSAxLzEyLCBhbHBoYSA9IDAuNSkgKwogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDAuNSwgbHR5ID0gMikgKwogIHNjYWxlX3hfY29udGludW91cyhsaW1pdHMgPSBjKC0wLjIsIDEuMiksIGJyZWFrcyA9IGMoMCwgMSwgMC41KSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIsIGRpcmVjdGlvbiA9IC0xKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIsIGRpcmVjdGlvbiA9IC0xKQpgYGAKCmBgYHtyfQpkMl9hbGxfZW5kb3JzZV9kaWZmX2Jvb3RfYW5pbSA8LSBkMl9hbGxfZW5kb3JzZV9kaWZmICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCwgYW5pbV9pbmFuLCBjb21wYXJpc29uKSAlPiUKICBtdWx0aV9ib290X3N0YW5kYXJkKGNvbCA9ICJkaWZmXzAxIikgJT4lCiAgdW5ncm91cCgpCmBgYAoKYGBge3J9CmZpZ1NVUFA1YV9wbG90IDwtIGQyX2FsbF9lbmRvcnNlX2RpZmYgJT4lCiAgZmlsdGVyKGFnZV9ncm91cCAhPSAiYWR1bHRzIikgJT4lCiAgbGVmdF9qb2luKGQyXzc5ICU+JSBkaXN0aW5jdChzdWJpZCwgYWdlKSAlPiUKICAgICAgICAgICAgICBmdWxsX2pvaW4oZDJfNDYgJT4lIGRpc3RpbmN0KHN1YmlkLCBhZ2UpKSkgJT4lCiAgZmlsdGVyKCFpcy5uYShhZ2UpKSAlPiUKICBtdXRhdGUoeSA9IChkaWZmZXJlbmNlICsgNikvMTIpICU+JQogIGdncGxvdChhZXMoeCA9IGFnZSwgeSA9IGRpZmZfMDEsIAogICAgICAgICAgICAgZmlsbCA9IGFuaW1faW5hbiwgY29sb3IgPSBhbmltX2luYW4pKSArCiAgZmFjZXRfd3JhcCh+IGNvbXBhcmlzb24pICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUsIGx0eSA9IDIpICsKICBnZW9tX2ppdHRlcihhbHBoYSA9IDAuNCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwLjAxNSkgKwogIGJpbm9taWFsX3Ntb290aChhZXMod2VpZ2h0ID0gMSksIHNob3cubGVnZW5kID0gRiwgYWxwaGEgPSAwLjA1KSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwKICAjICAgICAgICAgICAgIG1ldGhvZC5hcmdzID0gbGlzdChmYW1pbHkgPSAiYmlub21pYWwiKSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IGQyX2FsbF9lbmRvcnNlX2RpZmYgJT4lIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpLAogICAgICAgICAgICAgYWVzKHggPSAxMiksIGFscGhhID0gMC40LCBzaG93LmxlZ2VuZCA9IEYsCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcmRvZGdlKGRvZGdlLndpZHRoID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXR0ZXIuaGVpZ2h0ID0gMC4wMTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdHRlci53aWR0aCA9IDAuMjUpKSArCiAgZ2VvbV9wb2ludHJhbmdlKGRhdGEgPSBkMl9hbGxfZW5kb3JzZV9kaWZmX2Jvb3RfYW5pbSAlPiUgCiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKGFnZV9ncm91cCA9PSAiYWR1bHRzIiksCiAgICAgICAgICAgICAgICAgIGFlcyh4ID0gMTIsIHkgPSBtZWFuLCB5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjUpLCBzaG93LmxlZ2VuZCA9IEYsCiAgICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgZmF0dGVuID0gNSkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBjKDQ6MTAsIDEyKSwgCiAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMocGFzdGUwKDQ6MTAsICJ5IiksICJhZHVsdHMiKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMSwgMS8xMiksIGxhYmVscyA9IHNlcSgtNiwgNiwgMSkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygic2xhdGVncmV5IiwgImZpcmVicmljazEiKSwgbmEudmFsdWUgPSAiZ3JheSIpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJzbGF0ZWdyZXkiLCAiZmlyZWJyaWNrMSIpLCBuYS52YWx1ZSA9ICJncmF5IikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSwgc2l6ZSA9IDMpKSkgKwogIGxhYnMoeSA9ICJkaWZmZXJlbmNlcyBpbiBudW1iZXIgb2YgaXRlbXMgZW5kb3JzZWQgKG91dCBvZiA2KSIpCmBgYAoKYGBge3J9CmQyX2FsbF9lbmRvcnNlX2RpZmZfYm9vdCA8LSBkMl9hbGxfZW5kb3JzZV9kaWZmICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCwgY2hhcmFjdGVyLCBjb21wYXJpc29uKSAlPiUKICBtdWx0aV9ib290X3N0YW5kYXJkKGNvbCA9ICJkaWZmXzAxIikgJT4lCiAgdW5ncm91cCgpCmBgYAoKYGBge3J9CmZpZ1NVUFA1Yl9wbG90IDwtIGQyX2FsbF9lbmRvcnNlX2RpZmYgJT4lCiAgZmlsdGVyKGFnZV9ncm91cCAhPSAiYWR1bHRzIikgJT4lCiAgbGVmdF9qb2luKGQyXzc5ICU+JSBkaXN0aW5jdChzdWJpZCwgYWdlKSAlPiUKICAgICAgICAgICAgICBmdWxsX2pvaW4oZDJfNDYgJT4lIGRpc3RpbmN0KHN1YmlkLCBhZ2UpKSkgJT4lCiAgZmlsdGVyKCFpcy5uYShhZ2UpKSAlPiUKICBtdXRhdGUoeSA9IChkaWZmZXJlbmNlICsgNikvMTIpICU+JQogIGdncGxvdChhZXMoeCA9IGFnZSwgeSA9IGRpZmZfMDEsIAogICAgICAgICAgICAgZmlsbCA9IGNoYXJhY3RlciwgY29sb3IgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCh+IGNvbXBhcmlzb24pICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUsIGx0eSA9IDIpICsKICBnZW9tX2ppdHRlcihhbHBoYSA9IDAuNCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwLjAxNSkgKwogIGJpbm9taWFsX3Ntb290aChhZXMod2VpZ2h0ID0gMSksIHNob3cubGVnZW5kID0gRiwgYWxwaGEgPSAwLjA1KSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwKICAjICAgICAgICAgICAgIG1ldGhvZC5hcmdzID0gbGlzdChmYW1pbHkgPSAiYmlub21pYWwiKSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IGQyX2FsbF9lbmRvcnNlX2RpZmYgJT4lIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpLAogICAgICAgICAgICAgYWVzKHggPSAxMiksIGFscGhhID0gMC40LCBzaG93LmxlZ2VuZCA9IEYsCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcmRvZGdlKGRvZGdlLndpZHRoID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXR0ZXIuaGVpZ2h0ID0gMC4wMTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdHRlci53aWR0aCA9IDAuMjUpKSArCiAgZ2VvbV9wb2ludHJhbmdlKGRhdGEgPSBkMl9hbGxfZW5kb3JzZV9kaWZmX2Jvb3QgJT4lIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpLAogICAgICAgICAgICAgICAgICBhZXMoeCA9IDEyLCB5ID0gbWVhbiwgeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSwgc2hvdy5sZWdlbmQgPSBGLAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGZhdHRlbiA9IDUpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYyg0OjEwLCAxMiksIAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKHBhc3RlMCg0OjEwLCAieSIpLCAiYWR1bHRzIikpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDEvMTIpLCBsYWJlbHMgPSBzZXEoLTYsIDYsIDEpKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiUGFpcmVkIikgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiUGFpcmVkIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSwgc2l6ZSA9IDMpKSkgKwogIGxhYnMoeSA9ICJkaWZmZXJlbmNlcyBpbiBudW1iZXIgb2YgaXRlbXMgZW5kb3JzZWQgKG91dCBvZiA2KSIpCmBgYAoKYGBge3J9CmZpZ1NVUFA1X3Bsb3RzIDwtIHBsb3RfZ3JpZChmaWdTVVBQNWFfcGxvdCwgZmlnU1VQUDViX3Bsb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuY29sID0gMSwgbGFiZWxzID0gIkFVVE8iKQpgYGAKCgpgYGB7ciwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDYsIGZpZy5hc3AgPSAwLjd9CmZpZ1NVUFA1X3dpdGhfY2FwdGlvbiA8LSBhZGRfc3ViKGZpZ1NVUFA1X3Bsb3RzLCBzdHJfd3JhcCgiRmlndXJlIFNVUFA1OiBEaWZmZXJlbmNlcyBpbiB0aGUgbnVtYmVyIG9mIG1lbnRhbCBjYXBhY2l0eSBpdGVtcyAob3V0IG9mIDYpIGVuZG9yc2VkIGFjcm9zcyB0aGUgdGhyZWUgZG9tYWlucyAoQk9EWSBtaW51cyBIRUFSVCwgQk9EWSBtaW51cyBNSU5ELCBhbmQgTUlORCBtaW51cyBIRUFSVCkgYnkgNC0gdG8gOS15ZWFyLW9sZCBjaGlsZHJlbiBhbmQgYWR1bHRzIGluIFN0dWR5IDEsIGluIHdoaWNoIGVhY2ggcGFydGljaXBhbnQgYXNzZXNzZWQgMjAgbWVudGFsIGNhcGFjaXRpZXMgZm9yIG9uZSBvZiBuaW5lIHRhcmdldCBjaGFyYWN0ZXJzLiBXZSBkZWZpbmVkIGVhY2ggZG9tYWluIGJ5IHRoZSA2IGl0ZW1zIHRoYXQgbG9hZGVkIHRoZSBtb3N0IHBvc2l0aXZlbHkgb24gdGhlIGNvcnJlc3BvbmRpbmcgZmFjdG9yIGluIGFuIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcyBvZiBhZHVsdHMnIHJlc3BvbnNlcywgYW5kIHdlIGNvbnNpZGVyZWQgcmVzcG9uc2VzIG9mIGVpdGhlciAneWVzJyBvciAna2luZGEnIChidXQgbm90ICdubycpIHRvIGJlIGVuZG9yc2VtZW50cy4gTGluZXMgY29ycmVzcG9uZCB0byBsb2dpc3RpYyByZWdyZXNzaW9ucyBjb25zaWRlcmluZyBjaGlsZHJlbidzIHNjb3JlcyBhbG9uZS4gRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBjb25maWRlbmNlIGludGVydmFscyBvbiBhZHVsdHMnIHNjb3Jlcy4iLCAxMzIpLCB4ID0gMCwgaGp1c3QgPSAwKQpnZ2RyYXcoZmlnU1VQUDVfd2l0aF9jYXB0aW9uKQpgYGAKCiMjIEV4YW1pbmUgYWJzb2x1dGUgZGlmZmVyZW5jZSBzY29yZXMKCmBgYHtyfQpkMl9hbGxfZW5kb3JzZV9kaWZmX2Fic19ib290X2FuaW0gPC0gZDJfYWxsX2VuZG9yc2VfZGlmZiAlPiUKICBsZWZ0X2pvaW4oZDJfYW5pbSAlPiUgZGlzdGluY3QoY2hhcmFjdGVyLCBhbmltX2luYW4pKSAlPiUKICBncm91cF9ieShhZ2VfZ3JvdXAsIGFuaW1faW5hbiwgY29tcGFyaXNvbikgJT4lCiAgbXVsdGlfYm9vdF9zdGFuZGFyZChjb2wgPSAiZGlmZl8wMV9hYnMiKSAlPiUKICB1bmdyb3VwKCkKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IFR9CmdncGxvdChkMl9hbGxfZW5kb3JzZV9kaWZmLCAKICAgICAgIGFlcyh4ID0gZGlmZl8wMV9hYnMsIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwKSkgKwogIGZhY2V0X2dyaWQoYW5pbV9pbmFuIH4gY29tcGFyaXNvbikgKwogIGdlb21faGlzdG9ncmFtKHBvc2l0aW9uID0gImlkZW50aXR5IiwgYmlud2lkdGggPSAxLzYsIGFscGhhID0gMC41KSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gMC41LCBsdHkgPSAyKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoLTAuMiwgMS4yKSwgYnJlYWtzID0gYygwLCAxLCAwLjUpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIiwgZGlyZWN0aW9uID0gLTEpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIiwgZGlyZWN0aW9uID0gLTEpCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBUfQpnZ3Bsb3QoZDJfYWxsX2VuZG9yc2VfZGlmZiwgCiAgICAgICBhZXMoeCA9IGRpZmZfMDFfYWJzLCBjb2xvciA9IGFnZV9ncm91cCwgZmlsbCA9IGFnZV9ncm91cCkpICsKICBmYWNldF9ncmlkKC4gfiBjb21wYXJpc29uKSArCiAgZ2VvbV9oaXN0b2dyYW0ocG9zaXRpb24gPSAiaWRlbnRpdHkiLCBiaW53aWR0aCA9IDEvNiwgYWxwaGEgPSAwLjUpICsKICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSAwLjUsIGx0eSA9IDIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygtMC4yLCAxLjIpLCBicmVha3MgPSBjKDAsIDEsIDAuNSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDEiLCBkaXJlY3Rpb24gPSAtMSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiLCBkaXJlY3Rpb24gPSAtMSkKYGBgCgpgYGB7cn0KZmlnU1VQUDZhX3Bsb3QgPC0gZDJfYWxsX2VuZG9yc2VfZGlmZiAlPiUKICBmaWx0ZXIoYWdlX2dyb3VwICE9ICJhZHVsdHMiKSAlPiUKICBsZWZ0X2pvaW4oZDJfNzkgJT4lIGRpc3RpbmN0KHN1YmlkLCBhZ2UpICU+JQogICAgICAgICAgICAgIGZ1bGxfam9pbihkMl80NiAlPiUgZGlzdGluY3Qoc3ViaWQsIGFnZSkpKSAlPiUKICBmaWx0ZXIoIWlzLm5hKGFnZSkpICU+JQogIGdncGxvdChhZXMoeCA9IGFnZSwgeSA9IGRpZmZfMDFfYWJzLCAKICAgICAgICAgICAgIGZpbGwgPSBhbmltX2luYW4sIGNvbG9yID0gYW5pbV9pbmFuKSkgKwogIGZhY2V0X3dyYXAofiBjb21wYXJpc29uKSArCiAgZ2VvbV9qaXR0ZXIoYWxwaGEgPSAwLjQsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMC4wMTUpICsKICBiaW5vbWlhbF9zbW9vdGgoYWVzKHdlaWdodCA9IDEpLCBzaG93LmxlZ2VuZCA9IEYsIGFscGhhID0gMC4wNSkgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImdsbSIsCiAgIyAgICAgICAgICAgICBtZXRob2QuYXJncyA9IGxpc3QoZmFtaWx5ID0gImJpbm9taWFsIikpICsKICBnZW9tX3BvaW50KGRhdGEgPSBkMl9hbGxfZW5kb3JzZV9kaWZmICU+JSBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSwKICAgICAgICAgICAgIGFlcyh4ID0gMTIpLCBhbHBoYSA9IDAuNCwgc2hvdy5sZWdlbmQgPSBGLAogICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXJkb2RnZShkb2RnZS53aWR0aCA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0dGVyLmhlaWdodCA9IDAuMDE1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXR0ZXIud2lkdGggPSAwLjI1KSkgKwogIGdlb21fcG9pbnRyYW5nZShkYXRhID0gZDJfYWxsX2VuZG9yc2VfZGlmZl9hYnNfYm9vdF9hbmltICU+JSAKICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSwKICAgICAgICAgICAgICAgICAgYWVzKHggPSAxMiwgeSA9IG1lYW4sIHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNSksIHNob3cubGVnZW5kID0gRiwKICAgICAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBmYXR0ZW4gPSA1KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IGMoNDoxMCwgMTIpLCAKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYyhwYXN0ZTAoNDoxMCwgInkiKSwgImFkdWx0cyIpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAxLzYpLCBsYWJlbHMgPSBzZXEoMCwgNiwgMSkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygic2xhdGVncmV5IiwgImZpcmVicmljazEiKSwgbmEudmFsdWUgPSAiZ3JheSIpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJzbGF0ZWdyZXkiLCAiZmlyZWJyaWNrMSIpLCBuYS52YWx1ZSA9ICJncmF5IikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSwgc2l6ZSA9IDMpKSkgKwogIGxhYnMoeSA9ICJhc2JvbHV0ZSBkaWZmZXJlbmNlcyBpbiBudW1iZXIgb2YgaXRlbXMgZW5kb3JzZWQgKG91dCBvZiA2KSIpCmBgYAoKCmBgYHtyfQpkMl9hbGxfZW5kb3JzZV9kaWZmX2Fic19ib290IDwtIGQyX2FsbF9lbmRvcnNlX2RpZmYgJT4lCiAgZ3JvdXBfYnkoYWdlX2dyb3VwLCBjaGFyYWN0ZXIsIGNvbXBhcmlzb24pICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoY29sID0gImRpZmZfMDFfYWJzIikgJT4lCiAgdW5ncm91cCgpCmBgYAoKYGBge3J9CmZpZ1NVUFA2Yl9wbG90IDwtIGQyX2FsbF9lbmRvcnNlX2RpZmYgJT4lCiAgZmlsdGVyKGFnZV9ncm91cCAhPSAiYWR1bHRzIikgJT4lCiAgbGVmdF9qb2luKGQyXzc5ICU+JSBkaXN0aW5jdChzdWJpZCwgYWdlKSAlPiUKICAgICAgICAgICAgICBmdWxsX2pvaW4oZDJfNDYgJT4lIGRpc3RpbmN0KHN1YmlkLCBhZ2UpKSkgJT4lCiAgZmlsdGVyKCFpcy5uYShhZ2UpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBhZ2UsIHkgPSBkaWZmXzAxX2FicywgCiAgICAgICAgICAgICBmaWxsID0gY2hhcmFjdGVyLCBjb2xvciA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKH4gY29tcGFyaXNvbikgKwogIGdlb21faml0dGVyKGFscGhhID0gMC40LCB3aWR0aCA9IDAsIGhlaWdodCA9IDAuMDE1KSArCiAgYmlub21pYWxfc21vb3RoKGFlcyh3ZWlnaHQgPSAxKSwgc2hvdy5sZWdlbmQgPSBGLCBhbHBoYSA9IDAuMDUpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJnbG0iLAogICMgICAgICAgICAgICAgbWV0aG9kLmFyZ3MgPSBsaXN0KGZhbWlseSA9ICJiaW5vbWlhbCIpKSArCiAgZ2VvbV9wb2ludChkYXRhID0gZDJfYWxsX2VuZG9yc2VfZGlmZiAlPiUgZmlsdGVyKGFnZV9ncm91cCA9PSAiYWR1bHRzIiksCiAgICAgICAgICAgICBhZXMoeCA9IDEyKSwgYWxwaGEgPSAwLjQsIHNob3cubGVnZW5kID0gRiwKICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyZG9kZ2UoZG9kZ2Uud2lkdGggPSAwLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdHRlci5oZWlnaHQgPSAwLjAxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0dGVyLndpZHRoID0gMC4yNSkpICsKICBnZW9tX3BvaW50cmFuZ2UoZGF0YSA9IGQyX2FsbF9lbmRvcnNlX2RpZmZfYWJzX2Jvb3QgJT4lIAogICAgICAgICAgICAgICAgICAgIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpLAogICAgICAgICAgICAgICAgICBhZXMoeCA9IDEyLCB5ID0gbWVhbiwgeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSwgc2hvdy5sZWdlbmQgPSBGLAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGZhdHRlbiA9IDUpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYyg0OjEwLCAxMiksIAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKHBhc3RlMCg0OjEwLCAieSIpLCAiYWR1bHRzIikpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDEvNiksIGxhYmVscyA9IHNlcSgwLCA2LCAxKSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlBhaXJlZCIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlBhaXJlZCIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChhbHBoYSA9IDEsIHNpemUgPSAzKSkpICsKICBsYWJzKHkgPSAiYXNib2x1dGUgZGlmZmVyZW5jZXMgaW4gbnVtYmVyIG9mIGl0ZW1zIGVuZG9yc2VkIChvdXQgb2YgNikiKQpgYGAKCmBgYHtyfQpmaWdTVVBQNl9wbG90cyA8LSBwbG90X2dyaWQoZmlnU1VQUDZhX3Bsb3QsIGZpZ1NVUFA2Yl9wbG90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmNvbCA9IDEsIGxhYmVscyA9ICJBVVRPIikKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDYsIGZpZy5hc3AgPSAwLjd9CmZpZ1NVUFA2X3dpdGhfY2FwdGlvbiA8LSBhZGRfc3ViKGZpZ1NVUFA2X3Bsb3RzLCBzdHJfd3JhcCgiRmlndXJlIFNVUFA2OiBBYnNvbHV0ZSBkaWZmZXJlbmNlcyBpbiB0aGUgbnVtYmVyIG9mIG1lbnRhbCBjYXBhY2l0eSBpdGVtcyAob3V0IG9mIDYpIGVuZG9yc2VkIGFjcm9zcyB0aGUgdGhyZWUgZG9tYWlucyAoQk9EWSBtaW51cyBIRUFSVCwgQk9EWSBtaW51cyBNSU5ELCBhbmQgTUlORCBtaW51cyBIRUFSVCkgYnkgNC0gdG8gOS15ZWFyLW9sZCBjaGlsZHJlbiBhbmQgYWR1bHRzIGluIFN0dWR5IDIsIGluIHdoaWNoIGVhY2ggcGFydGljaXBhbnQgYXNzZXNzZWQgMjAgbWVudGFsIGNhcGFjaXRpZXMgZm9yIG9uZSBvZiBuaW5lIHRhcmdldCBjaGFyYWN0ZXJzLiBXZSBkZWZpbmVkIGVhY2ggZG9tYWluIGJ5IHRoZSA2IGl0ZW1zIHRoYXQgbG9hZGVkIHRoZSBtb3N0IHBvc2l0aXZlbHkgb24gdGhlIGNvcnJlc3BvbmRpbmcgZmFjdG9yIGluIGFuIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcyBvZiBhZHVsdHMnIHJlc3BvbnNlcywgYW5kIHdlIGNvbnNpZGVyZWQgcmVzcG9uc2VzIG9mIGVpdGhlciAneWVzJyBvciAna2luZGEnIChidXQgbm90ICdubycpIHRvIGJlIGVuZG9yc2VtZW50cy4gTGluZXMgY29ycmVzcG9uZCB0byBsb2dpc3RpYyByZWdyZXNzaW9ucyBjb25zaWRlcmluZyBjaGlsZHJlbidzIHNjb3JlcyBhbG9uZS4gRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBjb25maWRlbmNlIGludGVydmFscyBvbiBhZHVsdHMnIHNjb3Jlcy4iLCAxMzApLCB4ID0gMCwgaGp1c3QgPSAwKQpnZ2RyYXcoZmlnU1VQUDZfd2l0aF9jYXB0aW9uKQpgYGAKCgojIFN0dWR5IDMKCiMjIERlZmluZSBidWNrZXRzCgpgYGB7cn0KZDNfYnVja2V0cyA8LSBsb2FkaW5nc19mdW4oZWZhXzNfZDNfYWQpICU+JQogIG11dGF0ZShmYWN0b3IgPSByZWNvZGVfZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRjEiID0gIkJPRFkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGMiIgPSAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGMyIgPSAiTUlORCIpKSAlPiUKICBncm91cF9ieShmYWN0b3IpICU+JQogIHRvcF9uKDYsIGxvYWRpbmcpICU+JQogIHVuZ3JvdXAoKQpgYGAKCmBgYHtyfQpkM19hbGxfZW5kb3JzZSA8LSBkM19idWNrZXRzICU+JQogIHNlbGVjdCgtbG9hZGluZykgJT4lCiAgbGVmdF9qb2luKGQzX2FsbCkgJT4lCiAgbXV0YXRlKGVuZG9yc2UgPSBpZmVsc2UocmVzcG9uc2VfbnVtID4gMCwgMSwgMCkpICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCwgc3ViaWQsIGNoYXJhY3RlciwgZmFjdG9yKSAlPiUKICBzdW1tYXJpc2UobiA9IGxlbmd0aChlbmRvcnNlKSwKICAgICAgICAgICAgc3VtX2VuZG9yc2UgPSBzdW0oZW5kb3JzZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgcHJvcF9lbmRvcnNlID0gbWVhbihlbmRvcnNlLCBuYS5ybSA9IFQpKSAlPiUKICB1bmdyb3VwKCkKYGBgCgojIyBFeGFtaW5lIGZpcnN0LW9yZGVyIGFnZSB0cmVuZHMKCmBgYHtyfQpkM19hbGxfZW5kb3JzZV9ib290IDwtIGQzX2FsbF9lbmRvcnNlICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCwgY2hhcmFjdGVyLCBmYWN0b3IpICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoY29sID0gInByb3BfZW5kb3JzZSIpICU+JQogIHVuZ3JvdXAoKQpgYGAKCmBgYHtyfQpmaWdTVVBQN19wbG90IDwtIGQzX2FsbF9lbmRvcnNlICU+JQogIGZpbHRlcihhZ2VfZ3JvdXAgIT0gImFkdWx0cyIpICU+JQogIGxlZnRfam9pbihkM180NiAlPiUgZGlzdGluY3Qoc3ViaWQsIGFnZSkpICU+JQogIGZpbHRlcighaXMubmEoYWdlKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gYWdlLCB5ID0gcHJvcF9lbmRvcnNlLCAKICAgICAgICAgICAgIGZpbGwgPSBjaGFyYWN0ZXIsIGNvbG9yID0gY2hhcmFjdGVyLCBzaGFwZSA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKH4gZmFjdG9yKSArCiAgZ2VvbV9qaXR0ZXIoYWxwaGEgPSAwLjQsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMC4wMykgKwogIGJpbm9taWFsX3Ntb290aChhZXMod2VpZ2h0ID0gbiksIHNob3cubGVnZW5kID0gRikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImdsbSIsCiAgIyAgICAgICAgICAgICBtZXRob2QuYXJncyA9IGxpc3QoZmFtaWx5ID0gImJpbm9taWFsIikpICsKICBnZW9tX3BvaW50KGRhdGEgPSBkM19hbGxfZW5kb3JzZSAlPiUgZmlsdGVyKGFnZV9ncm91cCA9PSAiYWR1bHRzIiksCiAgICAgICAgICAgICBhZXMoeCA9IDYpLCBhbHBoYSA9IDAuNCwgc2hvdy5sZWdlbmQgPSBGLAogICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXJkb2RnZShkb2RnZS53aWR0aCA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0dGVyLmhlaWdodCA9IDAuMDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdHRlci53aWR0aCA9IDAuMjUpKSArCiAgZ2VvbV9wb2ludHJhbmdlKGRhdGEgPSBkM19hbGxfZW5kb3JzZV9ib290ICU+JSBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSwKICAgICAgICAgICAgICAgICAgYWVzKHggPSA2LCB5ID0gbWVhbiwgeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSwgc2hvdy5sZWdlbmQgPSBGLAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGZhdHRlbiA9IDUpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYyg0OjYpLCAKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYyhwYXN0ZTAoNDo1LCAieSIpLCAiYWR1bHRzIikpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDEvNiksIGxhYmVscyA9IDA6NikgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCIjZmI5YTk5IiwgIiMxZjc4YjQiKSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiNmYjlhOTkiLCAiIzFmNzhiNCIpKSArCiAgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMjEsIDIyKSkgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSwgc2l6ZSA9IDMpKSkgKwogIGxhYnMoeSA9ICJudW1iZXIgb2YgaXRlbXMgZW5kb3JzZWQgKG91dCBvZiA2KSIpCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA2LCBmaWcuYXNwID0gMC43fQpmaWdTVVBQN193aXRoX2NhcHRpb24gPC0gYWRkX3N1YihmaWdTVVBQN19wbG90LCBzdHJfd3JhcCgiRmlndXJlIFNVUFA3OiBOdW1iZXIgb2YgbWVudGFsIGNhcGFjaXR5IGl0ZW1zIChvdXQgb2YgNikgZW5kb3JzZWQgaW4gZWFjaCBkb21haW4gKEJPRFksIEhFQVJULCBhbmQgTUlORCkgYnkgNC0gdG8gNS15ZWFyLW9sZCBjaGlsZHJlbiBhbmQgYWR1bHRzIGluIFN0dWR5IDMsIGluIHdoaWNoIGVhY2ggcGFydGljaXBhbnQgYXNzZXNzZWQgMTggbWVudGFsIGNhcGFjaXRpZXMgZm9yIGVhY2ggb2YgdHdvIHRhcmdldCBjaGFyYWN0ZXJzOiBhIGJlZXRsZSAocGluayBjaXJjbGVzKSBhbmQgYSByb2JvdCAoYmx1ZSBzcXVhcmVzKS4gV2UgZGVmaW5lZCBlYWNoIGRvbWFpbiBieSB0aGUgNiBpdGVtcyB0aGF0IGxvYWRlZCB0aGUgbW9zdCBwb3NpdGl2ZWx5IG9uIHRoZSBjb3JyZXNwb25kaW5nIGZhY3RvciBpbiBhbiBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMgb2YgYWR1bHRzJyByZXNwb25zZXMsIGFuZCB3ZSBjb25zaWRlcmVkIHJlc3BvbnNlcyBvZiBlaXRoZXIgJ3llcycgb3IgJ2tpbmRhJyAoYnV0IG5vdCAnbm8nKSB0byBiZSBlbmRvcnNlbWVudHMuIExpbmVzIGNvcnJlc3BvbmQgdG8gbG9naXN0aWMgcmVncmVzc2lvbnMgY29uc2lkZXJpbmcgY2hpbGRyZW4ncyBzY29yZXMgYWxvbmUuIEVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgb24gYWR1bHRzJyBzY29yZXMuIiwgMTMwKSwgeCA9IDAsIGhqdXN0ID0gMCkKZ2dkcmF3KGZpZ1NVUFA3X3dpdGhfY2FwdGlvbikKYGBgCgojIyBFeGFtaW5lIGRpZmZlcmVuY2Ugc2NvcmVzCgpgYGB7cn0KZDNfYWxsX2VuZG9yc2VfZGlmZiA8LSBkM19hbGxfZW5kb3JzZSAlPiUKICBzZWxlY3QoYWdlX2dyb3VwLCBzdWJpZCwgY2hhcmFjdGVyLCBmYWN0b3IsIHByb3BfZW5kb3JzZSkgJT4lCiAgc3ByZWFkKGZhY3RvciwgcHJvcF9lbmRvcnNlKSAlPiUKICBncm91cF9ieShhZ2VfZ3JvdXAsIHN1YmlkLCBjaGFyYWN0ZXIpICU+JQogIG11dGF0ZShgQk9EWSBtaW51cyBIRUFSVGAgPSBCT0RZIC0gSEVBUlQsCiAgICAgICAgIGBCT0RZIG1pbnVzIE1JTkRgID0gQk9EWSAtIE1JTkQsCiAgICAgICAgIGBNSU5EIG1pbnVzIEhFQVJUYCA9IE1JTkQgLSBIRUFSVCkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBzZWxlY3QoLWMoQk9EWSwgSEVBUlQsIE1JTkQpKSAlPiUKICBnYXRoZXIoY29tcGFyaXNvbiwgZGlmZmVyZW5jZSwgY29udGFpbnMoIm1pbiIpKSAlPiUKICBtdXRhdGUoZGlmZl8wMSA9IChkaWZmZXJlbmNlICsgMSkvMiwKICAgICAgICAgZGlmZl8wMV9hYnMgPSBhYnMoZGlmZmVyZW5jZSkpCmBgYAoKYGBge3J9CmQzX2FsbF9lbmRvcnNlX2RpZmZfYm9vdCA8LSBkM19hbGxfZW5kb3JzZV9kaWZmICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCwgY2hhcmFjdGVyLCBjb21wYXJpc29uKSAlPiUKICBtdWx0aV9ib290X3N0YW5kYXJkKGNvbCA9ICJkaWZmXzAxIikgJT4lCiAgdW5ncm91cCgpCmBgYAoKYGBge3J9CmZpZ1NVUFA4X3Bsb3QgPC0gZDNfYWxsX2VuZG9yc2VfZGlmZiAlPiUKICBmaWx0ZXIoYWdlX2dyb3VwICE9ICJhZHVsdHMiKSAlPiUKICBsZWZ0X2pvaW4oZDNfNDYgJT4lIGRpc3RpbmN0KHN1YmlkLCBhZ2UpKSAlPiUKICBmaWx0ZXIoIWlzLm5hKGFnZSkpICU+JQogIG11dGF0ZSh5ID0gKGRpZmZlcmVuY2UgKyA2KS8xMikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gYWdlLCB5ID0gZGlmZl8wMSwgCiAgICAgICAgICAgICBmaWxsID0gY2hhcmFjdGVyLCBjb2xvciA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCh+IGNvbXBhcmlzb24pICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUsIGx0eSA9IDIpICsKICBnZW9tX2ppdHRlcihhbHBoYSA9IDAuNCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwLjAxNSkgKwogIGJpbm9taWFsX3Ntb290aChhZXMod2VpZ2h0ID0gMSksIHNob3cubGVnZW5kID0gRikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImdsbSIsCiAgIyAgICAgICAgICAgICBtZXRob2QuYXJncyA9IGxpc3QoZmFtaWx5ID0gImJpbm9taWFsIikpICsKICBnZW9tX3BvaW50KGRhdGEgPSBkM19hbGxfZW5kb3JzZV9kaWZmICU+JSBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSwKICAgICAgICAgICAgIGFlcyh4ID0gNiksIGFscGhhID0gMC40LCBzaG93LmxlZ2VuZCA9IEYsCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcmRvZGdlKGRvZGdlLndpZHRoID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXR0ZXIuaGVpZ2h0ID0gMC4wMTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdHRlci53aWR0aCA9IDAuMjUpKSArCiAgZ2VvbV9wb2ludHJhbmdlKGRhdGEgPSBkM19hbGxfZW5kb3JzZV9kaWZmX2Jvb3QgJT4lIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpLAogICAgICAgICAgICAgICAgICBhZXMoeCA9IDYsIHkgPSBtZWFuLCB5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjUpLCBzaG93LmxlZ2VuZCA9IEYsCiAgICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgZmF0dGVuID0gNSkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBjKDQ6NiksIAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKHBhc3RlMCg0OjUsICJ5IiksICJhZHVsdHMiKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMSwgMS8xMiksIGxhYmVscyA9IHNlcSgtNiwgNiwgMSkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiI2ZiOWE5OSIsICIjMWY3OGI0IikpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjZmI5YTk5IiwgIiMxZjc4YjQiKSkgKwogIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDIxLCAyMikpICsKICB0aGVtZV9idygpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChhbHBoYSA9IDEsIHNpemUgPSAzKSkpICsKICBsYWJzKHkgPSAiZGlmZmVyZW5jZXMgaW4gbnVtYmVyIG9mIGl0ZW1zIGVuZG9yc2VkIChvdXQgb2YgNikiKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDAuN30KZmlnU1VQUDhfd2l0aF9jYXB0aW9uIDwtIGFkZF9zdWIoZmlnU1VQUDhfcGxvdCwgc3RyX3dyYXAoIkZpZ3VyZSBTVVBQODogRGlmZmVyZW5jZXMgaW4gdGhlIG51bWJlciBvZiBtZW50YWwgY2FwYWNpdHkgaXRlbXMgKG91dCBvZiA2KSBlbmRvcnNlZCBhY3Jvc3MgdGhlIHRocmVlIGRvbWFpbnMgKEJPRFkgbWludXMgSEVBUlQsIEJPRFkgbWludXMgTUlORCwgYW5kIE1JTkQgbWludXMgSEVBUlQpIGJ5IDQtIHRvIDUteWVhci1vbGQgY2hpbGRyZW4gYW5kIGFkdWx0cyBpbiBTdHVkeSAzLCBpbiB3aGljaCBlYWNoIHBhcnRpY2lwYW50IGFzc2Vzc2VkIDE4IG1lbnRhbCBjYXBhY2l0aWVzIGZvciBlYWNoIG9mIHR3byB0YXJnZXQgY2hhcmFjdGVyczogYSBiZWV0bGUgKHBpbmsgY2lyY2xlcykgYW5kIGEgcm9ib3QgKGJsdWUgc3F1YXJlcykuIFdlIGRlZmluZWQgZWFjaCBkb21haW4gYnkgdGhlIDYgaXRlbXMgdGhhdCBsb2FkZWQgdGhlIG1vc3QgcG9zaXRpdmVseSBvbiB0aGUgY29ycmVzcG9uZGluZyBmYWN0b3IgaW4gYW4gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzIG9mIGFkdWx0cycgcmVzcG9uc2VzLCBhbmQgd2UgY29uc2lkZXJlZCByZXNwb25zZXMgb2YgZWl0aGVyICd5ZXMnIG9yICdraW5kYScgKGJ1dCBub3QgJ25vJykgdG8gYmUgZW5kb3JzZW1lbnRzLiBMaW5lcyBjb3JyZXNwb25kIHRvIGxvZ2lzdGljIHJlZ3Jlc3Npb25zIGNvbnNpZGVyaW5nIGNoaWxkcmVuJ3Mgc2NvcmVzIGFsb25lLiBFcnJvciBiYXJzIGFyZSBib290c3RyYXBwZWQgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIG9uIGFkdWx0cycgc2NvcmVzLiIsIDEzMCksIHggPSAwLCBoanVzdCA9IDApCmdnZHJhdyhmaWdTVVBQOF93aXRoX2NhcHRpb24pCmBgYAoKIyMgRXhhbWluZSBhYnNvbHV0ZSBkaWZmZXJlbmNlIHNjb3JlcwoKYGBge3J9CmQzX2FsbF9lbmRvcnNlX2RpZmZfYWJzX2Jvb3QgPC0gZDNfYWxsX2VuZG9yc2VfZGlmZiAlPiUKICBncm91cF9ieShhZ2VfZ3JvdXAsIGNoYXJhY3RlciwgY29tcGFyaXNvbikgJT4lCiAgbXVsdGlfYm9vdF9zdGFuZGFyZChjb2wgPSAiZGlmZl8wMV9hYnMiKSAlPiUKICB1bmdyb3VwKCkKYGBgCgpgYGB7cn0KZmlnU1VQUDlfcGxvdCA8LSBkM19hbGxfZW5kb3JzZV9kaWZmICU+JQogIGZpbHRlcihhZ2VfZ3JvdXAgIT0gImFkdWx0cyIpICU+JQogIGxlZnRfam9pbihkM180NiAlPiUgZGlzdGluY3Qoc3ViaWQsIGFnZSkpICU+JQogIGZpbHRlcighaXMubmEoYWdlKSkgJT4lCiAgbXV0YXRlKHkgPSAoZGlmZmVyZW5jZSArIDYpLzEyKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBhZ2UsIHkgPSBkaWZmXzAxX2FicywgCiAgICAgICAgICAgICBmaWxsID0gY2hhcmFjdGVyLCBjb2xvciA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCh+IGNvbXBhcmlzb24pICsKICBnZW9tX2ppdHRlcihhbHBoYSA9IDAuNCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwLjAxNSkgKwogIGJpbm9taWFsX3Ntb290aChhZXMod2VpZ2h0ID0gMSksIHNob3cubGVnZW5kID0gRikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImdsbSIsCiAgIyAgICAgICAgICAgICBtZXRob2QuYXJncyA9IGxpc3QoZmFtaWx5ID0gImJpbm9taWFsIikpICsKICBnZW9tX3BvaW50KGRhdGEgPSBkM19hbGxfZW5kb3JzZV9kaWZmICU+JSBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSwKICAgICAgICAgICAgIGFlcyh4ID0gNiksIGFscGhhID0gMC40LCBzaG93LmxlZ2VuZCA9IEYsCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcmRvZGdlKGRvZGdlLndpZHRoID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXR0ZXIuaGVpZ2h0ID0gMC4wMTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdHRlci53aWR0aCA9IDAuMjUpKSArCiAgZ2VvbV9wb2ludHJhbmdlKGRhdGEgPSBkM19hbGxfZW5kb3JzZV9kaWZmX2Fic19ib290ICU+JSAKICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSwKICAgICAgICAgICAgICAgICAgYWVzKHggPSA2LCB5ID0gbWVhbiwgeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSwgc2hvdy5sZWdlbmQgPSBGLAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGZhdHRlbiA9IDUpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYyg0OjYpLCAKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYyhwYXN0ZTAoNDo1LCAieSIpLCAiYWR1bHRzIikpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDEvNiksIGxhYmVscyA9IHNlcSgwLCA2LCAxKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCIjZmI5YTk5IiwgIiMxZjc4YjQiKSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiNmYjlhOTkiLCAiIzFmNzhiNCIpKSArCiAgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMjEsIDIyKSkgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSwgc2l6ZSA9IDMpKSkgKwogIGxhYnMoeSA9ICJhc2JvbHV0ZSBkaWZmZXJlbmNlcyBpbiBudW1iZXIgb2YgaXRlbXMgZW5kb3JzZWQgKG91dCBvZiA2KSIpCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA2LCBmaWcuYXNwID0gMC43fQpmaWdTVVBQOV93aXRoX2NhcHRpb24gPC0gYWRkX3N1YihmaWdTVVBQOV9wbG90LCBzdHJfd3JhcCgiRmlndXJlIFNVUFA4OiBBYnNvbHV0ZSBkaWZmZXJlbmNlcyBpbiB0aGUgbnVtYmVyIG9mIG1lbnRhbCBjYXBhY2l0eSBpdGVtcyAob3V0IG9mIDYpIGVuZG9yc2VkIGFjcm9zcyB0aGUgdGhyZWUgZG9tYWlucyAoQk9EWSBtaW51cyBIRUFSVCwgQk9EWSBtaW51cyBNSU5ELCBhbmQgTUlORCBtaW51cyBIRUFSVCkgYnkgNC0gdG8gNS15ZWFyLW9sZCBjaGlsZHJlbiBhbmQgYWR1bHRzIGluIFN0dWR5IDMsIGluIHdoaWNoIGVhY2ggcGFydGljaXBhbnQgYXNzZXNzZWQgMTggbWVudGFsIGNhcGFjaXRpZXMgZm9yIGVhY2ggb2YgdHdvIHRhcmdldCBjaGFyYWN0ZXJzOiBhIGJlZXRsZSAocGluayBjaXJjbGVzKSBhbmQgYSByb2JvdCAoYmx1ZSBzcXVhcmVzKS4gV2UgZGVmaW5lZCBlYWNoIGRvbWFpbiBieSB0aGUgNiBpdGVtcyB0aGF0IGxvYWRlZCB0aGUgbW9zdCBwb3NpdGl2ZWx5IG9uIHRoZSBjb3JyZXNwb25kaW5nIGZhY3RvciBpbiBhbiBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMgb2YgYWR1bHRzJyByZXNwb25zZXMsIGFuZCB3ZSBjb25zaWRlcmVkIHJlc3BvbnNlcyBvZiBlaXRoZXIgJ3llcycgb3IgJ2tpbmRhJyAoYnV0IG5vdCAnbm8nKSB0byBiZSBlbmRvcnNlbWVudHMuIExpbmVzIGNvcnJlc3BvbmQgdG8gbG9naXN0aWMgcmVncmVzc2lvbnMgY29uc2lkZXJpbmcgY2hpbGRyZW4ncyBzY29yZXMgYWxvbmUuIEVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgb24gYWR1bHRzJyBzY29yZXMuIiwgMTMwKSwgeCA9IDAsIGhqdXN0ID0gMCkKZ2dkcmF3KGZpZ1NVUFA5X3dpdGhfY2FwdGlvbikKYGBgCgoK